{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "5a07d463-49df-4558-87f5-3498b29c1fc2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "mnis=tf.keras.datasets.mnist\n",
    "(x_train,y_train),(x_test,y_test)=mnist.load_data()\n",
    "x_train,x_test=x_train/255.0,x_test/255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "2f8dd140-5ca2-41e6-86d3-0a6544c6aee6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: tensorflow in d:\\programdata\\anaconda3\\lib\\site-packages (2.17.0)\n",
      "Requirement already satisfied: tensorflow-intel==2.17.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow) (2.17.0)\n",
      "Requirement already satisfied: absl-py>=1.0.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (2.1.0)\n",
      "Requirement already satisfied: astunparse>=1.6.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.6.3)\n",
      "Requirement already satisfied: flatbuffers>=24.3.25 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (24.3.25)\n",
      "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (0.6.0)\n",
      "Requirement already satisfied: google-pasta>=0.1.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (0.2.0)\n",
      "Requirement already satisfied: h5py>=3.10.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.11.0)\n",
      "Requirement already satisfied: libclang>=13.0.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (18.1.1)\n",
      "Requirement already satisfied: ml-dtypes<0.5.0,>=0.3.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (0.4.1)\n",
      "Requirement already satisfied: opt-einsum>=2.3.2 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.4.0)\n",
      "Requirement already satisfied: packaging in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (23.2)\n",
      "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.20.3)\n",
      "Requirement already satisfied: requests<3,>=2.21.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (2.32.2)\n",
      "Requirement already satisfied: setuptools in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (69.5.1)\n",
      "Requirement already satisfied: six>=1.12.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.16.0)\n",
      "Requirement already satisfied: termcolor>=1.1.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (2.5.0)\n",
      "Requirement already satisfied: typing-extensions>=3.6.6 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (4.11.0)\n",
      "Requirement already satisfied: wrapt>=1.11.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.14.1)\n",
      "Requirement already satisfied: grpcio<2.0,>=1.24.3 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.66.2)\n",
      "Requirement already satisfied: tensorboard<2.18,>=2.17 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (2.17.1)\n",
      "Requirement already satisfied: keras>=3.2.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (3.6.0)\n",
      "Requirement already satisfied: numpy<2.0.0,>=1.26.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorflow-intel==2.17.0->tensorflow) (1.26.4)\n",
      "Requirement already satisfied: wheel<1.0,>=0.23.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from astunparse>=1.6.0->tensorflow-intel==2.17.0->tensorflow) (0.43.0)\n",
      "Requirement already satisfied: rich in d:\\programdata\\anaconda3\\lib\\site-packages (from keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (13.3.5)\n",
      "Requirement already satisfied: namex in d:\\programdata\\anaconda3\\lib\\site-packages (from keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (0.0.8)\n",
      "Requirement already satisfied: optree in d:\\programdata\\anaconda3\\lib\\site-packages (from keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (0.13.0)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in d:\\programdata\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.17.0->tensorflow) (2.0.4)\n",
      "Requirement already satisfied: idna<4,>=2.5 in d:\\programdata\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.17.0->tensorflow) (3.7)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.17.0->tensorflow) (2.2.2)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in d:\\programdata\\anaconda3\\lib\\site-packages (from requests<3,>=2.21.0->tensorflow-intel==2.17.0->tensorflow) (2024.7.4)\n",
      "Requirement already satisfied: markdown>=2.6.8 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (3.4.1)\n",
      "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (0.7.2)\n",
      "Requirement already satisfied: werkzeug>=1.0.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (3.0.3)\n",
      "Requirement already satisfied: MarkupSafe>=2.1.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from werkzeug>=1.0.1->tensorboard<2.18,>=2.17->tensorflow-intel==2.17.0->tensorflow) (2.1.3)\n",
      "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from rich->keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (2.2.0)\n",
      "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in d:\\programdata\\anaconda3\\lib\\site-packages (from rich->keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (2.15.1)\n",
      "Requirement already satisfied: mdurl~=0.1 in d:\\programdata\\anaconda3\\lib\\site-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->keras>=3.2.0->tensorflow-intel==2.17.0->tensorflow) (0.1.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install tensorflow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "c5ab02c3-5bd4-4c99-a103-a6625edbc8f7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
      "\u001b[1m11490434/11490434\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 0us/step\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "mnist=tf.keras.datasets.mnist\n",
    "(x_train,y_train),(x_test,y_test)=mnist.load_data()\n",
    "x_train,x_test=x_train/255.0,x_test/255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "c21c99fe-92a3-45e9-aac6-149cae12a855",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\anaconda3\\Lib\\site-packages\\keras\\src\\layers\\reshaping\\flatten.py:37: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
      "  super().__init__(**kwargs)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                         </span>┃<span style=\"font-weight: bold\"> Output Shape                </span>┃<span style=\"font-weight: bold\">         Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
       "│ flatten (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)                    │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">784</span>)                 │               <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                        │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)                 │         <span style=\"color: #00af00; text-decoration-color: #00af00\">100,480</span> │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                      │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">10</span>)                  │           <span style=\"color: #00af00; text-decoration-color: #00af00\">1,290</span> │\n",
       "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                        \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape               \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m        Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
       "│ flatten (\u001b[38;5;33mFlatten\u001b[0m)                    │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m784\u001b[0m)                 │               \u001b[38;5;34m0\u001b[0m │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense (\u001b[38;5;33mDense\u001b[0m)                        │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m)                 │         \u001b[38;5;34m100,480\u001b[0m │\n",
       "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
       "│ dense_1 (\u001b[38;5;33mDense\u001b[0m)                      │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m)                  │           \u001b[38;5;34m1,290\u001b[0m │\n",
       "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">101,770</span> (397.54 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m101,770\u001b[0m (397.54 KB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">101,770</span> (397.54 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m101,770\u001b[0m (397.54 KB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model=tf.keras.models.Sequential()\n",
    "model.add(tf.keras.layers.Flatten(input_shape=(28,28)))\n",
    "model.add(tf.keras.layers.Dense(128,activation='relu'))\n",
    "model.add(tf.keras.layers.Dense(10,activation='softmax'))\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "6f8515df-6561-44c5-a229-234ccda7ce18",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 846us/step - loss: 0.4380 - sparse_categorical_accuracy: 0.8769\n",
      "Epoch 2/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 867us/step - loss: 0.1213 - sparse_categorical_accuracy: 0.9645\n",
      "Epoch 3/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 833us/step - loss: 0.0774 - sparse_categorical_accuracy: 0.9774\n",
      "Epoch 4/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 844us/step - loss: 0.0563 - sparse_categorical_accuracy: 0.9833\n",
      "Epoch 5/5\n",
      "\u001b[1m1875/1875\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 870us/step - loss: 0.0435 - sparse_categorical_accuracy: 0.9876\n",
      "313/313 - 0s - 1ms/step - loss: 0.0750 - sparse_categorical_accuracy: 0.9772\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.07495161145925522, 0.9771999716758728]"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['sparse_categorical_accuracy'])\n",
    "model.fit(x_train,y_train,batch_size=32,epochs=5)\n",
    "model.evaluate(x_test,y_test,batch_size=32,verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "95d846e9-1e3b-4867-ba8a-7c19c341fc0c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 11ms/step\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 18ms/step\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 16ms/step\n"
     ]
    },
    {
     "data": {
      "image/png": "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yd9q+n2yevVqFZ86darMclq2bKni/v37Wy3/ymskJCSo+L///W+Z19DxnnFO3P6YiIiIyo0NAiIiInLeIQP9enp3td7t1a9fPxUPGzbM6mv1t5efn69iPz8/4yrrgJrS/ZmRkaHiG264weo5+/fvV/GcOXNUXFhYqOI1a9aouDxDBsHBwSru1auXivVZBidOnCiznIpg96dzqin3jO7w4cMqbtGiRZnn2/oMq4zzASA9PV3FjzzyiIq/+eabMsvS8Z5xThwyICIionJjg4CIiIicd2GiRo0aqfiPP/4o83y9S8RW94i3t7eKe/fureIvvviiIlUkADt37lTxvffeq+Lc3FxDyj958qSKP/nkE0PKdAUmk0nFo0aNUvH777+vYv0+0Wd/zJgxQ8UffPCBistzH1KJoUOHqlh/2l//vWdmZqrYVvd8YGCgivXPLXtt2rRJxdnZ2RY/mz17torT0tIqfI2qMHXqVBWPHz++zPNnzpxp8f2ECRNUbDabVezl5aViHx+fMsutXbu2ip999tkyz7dl4cKFKr5y+LM8w6pGYg8BERERsUFAREREbBAQERERnHja4d69e1X873//2+o5586ds3q8Tp06ZZa/bds2Fd9+++121s44NWUKlb464euvv271nMcee0zFH330UaXXqbLVtClUN954o4o//fRTFevj1/ZOT9Onoz355JMq1p8dqWo15Z7Rx+Jbt26tYr3+a9euVbGtVQH150HKsxqoLfrzOPrYuZGq4p558803VVyeZwiu9Nlnn6lYfy6mbdu2Kra1OZu994+9Ro4cafG9vqGbIzjtkIiIiMqNDQIiIiJyriGDmJgYFb/99tsq1jfi0FcbHD16tIr1+n344Ycq1qeG6I4fP67ipk2bVqzCBqgp3Z+1atVS8Zdffqnizp07q/jQoUMqvvPOO1V87NixCl/X19dXxfpU1NDQUJuv0VcxdERNGDLQ/+0uXrxYxT179lTx+fPnVaxPO9y+fbuK9RVAH330URXr06+WL1+uYn146J9//qlI1SvMWe+ZqKgoi+/1aX5169ZV8a+//qriyMhIFetd+jVVVdwz+u/MqHu9vCp7yODgwYMW3+ufrwUFBRUul0MGREREVG5sEBAREVH1rlR4ZVf9K6+8ouIr9+u+bMuWLSrWu65vvfVWFeur5NkaMiD76N3OevfyrFmzVKxvMJWamqpifZZITk5Omddq1aqVit944w0VDx482Or5tmahuIInnnhCxbaGCQYNGqTirVu3Wi0nOTlZxUuXLlVxfHy8ih966CEV6xtZ6avcuZqwsDAV60+vA5afPfqKc99//72Kr4Vhgqr23XffqVj//+COO+6o0nroq0weOXJExRs2bFCx/vlVng319JkOAODpWfJftCNDBuXFHgIiIiJig4CIiIiqecggIiLC4vv69euX+Rr9qfMDBw6oWH8CvTz0p63JPvrGKPrMEL37tEuXLipOSUlR8W233Wa1TL3rr127diq+dOmSivXFjl588UUV5+Xllbvu15qQkBAV609A6/eGrWECW/bt26fi3bt3q/iGG25QcXBwsF1lXqv0z7CrfX59/fXXKtaHech++qyW2NhYFetDh0FBQTZfry96p79e99xzz6lY/79Cv7Y+q8rWTCp9tlV1LoBXXuwhICIiIjYIiIiIqJoXJurQoYPF91988YWK/f39y3y93p3s4eGhYlt11bt7evXqpWJb+5BXBWddZKUiunbtqmK9e19fY//o0aNWX6t3R+t5uu+++1ScmJhoSD3LqyYsTBQdHa3id955R8X6U+36/vFXPgl/mf5087hx41Ssz/jQFyn67bffVNy8eXP7Ku2g6r5n9KfF9T0drvw80+lr5uuzMlavXq3ia2HGQXXeM+Hh4SqeNGmSivXZAAAwb948Fev7TRhFHzrVh9wCAgLKfK2+BwkADB06VMWO7D/BhYmIiIio3NggICIiIufay6Bjx44q7t27t4r1rmh9UYrPP/9cxcuWLVNx9+7dy7zWM888o+LqnHFQ3d2flWXgwIEqvrIbzBp9jwp9G1h9PfiqVhOGDPTFiPQtvW0t7GXvWuy2zteH6/Q6VMXwmzPdM/rQ2JVb19q6Xnnqr98PcXFxZZ4/Z84cFZ8+fVrF+gJVVaEm3DOVbe7cuSp+6qmn7HrtlYus6bOFHMEhAyIiIio3NgiIiIioehcmupK+ProeU82jr+1dHqdOnVJxdc76qGn0p9yHDBmiYn1fkJtvvtmuMvWZIDNnzlSxvi1yp06dVDxgwAAVu1ruXnrpJRUnJSVZ/Ez/fekLcpWn+1bfB+H5558v83x9ton+ZLu+18jmzZtVXBXr4rsqexfJ02VlZRlYE/uxh4CIiIjYICAiIiInGzKgms3WwkS6X375RcXXXXedivXFbcaPH69ifZEcurr169erWN/OWF/cSV/8Rp+VoG8frh/XtWjRQsX6MIS+n4Kr0Z/oX7t2rcXP9O+7detm9fX6Ijb6uve6wMBAFeuzr2zR91dISEhQsX5PjhkzpsxyqGroi1Pp+8RUB/YQEBERERsERERE5GJDBvoa+T/88EM11uTaERUVpWJ9LX19/wL99653Z+rdqPoiU8OHD1fxhx9+qOL09HQDauwaLly4oOIVK1aUeb6tYQKd/nS8rZisszX7Qj++fPlyq+eYTCYVN2zYUMX6LIb+/fur+MrFbS4bPXq0ivUtgIHyLX5EtulbX7dp08au1+7YsUPFjuxXYAT2EBAREREbBERERORiQwZeXl4q1rvVXG0xFSM98sgjKu7SpYuK9bXYH3zwQRXn5OSoWF8oRV9gR18bX19w5cknn3S8wkQ1jL6IkL6V72uvvWY11vdpeffdd62WqQ/vAZZ7xHBROPsFBweruH379iq2NZym7wXyxRdfVF7F7MQeAiIiImKDgIiIiFxsyICM4ePjo2L96WadPiMgMTHR6jlFRUUqPnbsmNVzmjVrVpEqUiW44YYbrB7/7bffqrYidFX6DAJbXdb6XgkA0LJlSxVzyKB8PDw8VDxp0iQV659rtnz22Wcq1vcOqW7sISAiIiI2CIiIiIhDBlQB+rr3+kIpurfeesuuMvW190eMGKHixo0bq7hOnToqPnfunF3lk+MiIyNVXFhYqGJ9USmqfq1atSrznPPnz1t8r89eoPLRtzm+//777Xrt2bNnja6OIdhDQERERGwQEBERkYsNGXAvA2Poiw7pa2/rT93m5ubaVaa+FbLuxIkTKuYwQdUbOHCgihs0aKDiLVu2qHjfvn1VWicqTd/6um/fvmWef+XeFVycrWotWrSouqtgFXsIiIiIiA0CIiIicrEhA+5lYAx97e3s7GwV693++iwDvatf/12HhYWpWO+aJucxdOhQFbu7l/z9cPDgweqoTo0SEhKi4ry8PBXrMzR0+p4FTZo0UbG+Tv4DDzygYn37Yz8/PxXbWozojz/+UPEbb7xx1bpT2fRcXCvYQ0BERERsEBAREREbBERERAQXe4aAjPfII4+oeOHChSq++eabVbxr1y4V6+Onnp4l//y8vb1VrI+BLl261LC6Uvnomxjdd999KtbzsmPHjiqtU03QrVs3i++3bt2q4oyMDBXn5ORYff2ZM2dUbOv3bot+jh7/9NNPKu7Xr5+Ks7KyyiyTStM/s3r16lXhcoYPH67i//u//3OgRsZiDwERERGxQUBEREQuNmSgb+jx6aefVmNNrh36inX6MMGwYcNUPGjQIBX36NHDajl6N+f333+v4pSUFEPqSeU3btw4Fbu5ual4/vz5KtY3o6JiP//8s8X3a9asUfGoUaNUXJ4hAHvt379fxbNnz1axvoKhPvWRKsbX11fFd999d4XLuf76642ojuHYQ0BERERsEBARERHgJuXsv9K7Dp2R/iR79+7drZ6jr5hXr169Sq9TeRjRfejsuampHM1NTcrLHXfcoeJ169ap2GQyqXj06NEqXrJkSdVUzIqaeM+0bt1axfrvUV+ts3///iqeM2eOim29348++kjF+iZg1Tk0cK3fM/qKkH/99VeFy7n11ltVrK/8WlnKmxf2EBAREREbBERERORiswzee++96q4CkVNq166divVFog4fPqzitWvXVmmdriX671GfxUE1i76w2oEDB1TcoUOHMl/79ttvqzg1NdXYihmEPQRERETEBgERERFdQ7MMaqqa+MS0q7jWn5jW3XTTTSpOSEhQ8ciRI1X89ddfV2GNbOM947xc6Z7517/+peJff/3V6jkzZ85U8SuvvKJis9lceRWzgrMMiIiIqNzYICAiIiIOGVQ3dn86L1fq/qxJeM84L94zzolDBkRERFRubBAQERFR+YcMiIiI6NrFHgIiIiJig4CIiIjYICAiIiKwQUBERERgg4CIiIjABgERERGBDQIiIiICGwREREQENgiIiIgIwP8DPA4Crx9o3pEAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(5):\n",
    "    t=np.random.randint(1,10000)\n",
    "    x=tf.reshape(x_test[t],(1,28,28))\n",
    "    y_pred=np.argmax(model.predict(x),axis=1)\n",
    "    plt.subplot(1,5,i+1)\n",
    "    plt.rcParams['font.sans-serif']=['SimHei']\n",
    "    plt.axis(\"off\")\n",
    "    plt.imshow(x_test[t],cmap='gray')\n",
    "    title=\"标签值: \"+str(y_test[t])+\"\\n预测值: \"+str(y_pred[0])\n",
    "    plt.title(title)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6bb2d816-29c3-44df-9e87-13696c1a7496",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
